package com.eastfair.imaster.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * <p>
 * 实体类
 * 观众注册表（预登记表）
 * </p>
 *
 * @author zjn
 * @since 2021-08-18
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VisitorRegisterDTO implements Serializable {

    /**
     * 校验标识 页面语言默认表单
     */
    public interface VerifyDefaultFormField {
    }

    /**
     * 校验标识 用户语言默认表单
     */
    public interface VerifyUserFormField {
    }

    /**
     * 校验标识 用户语言默认表单
     */
    public interface VerifyUserQuestionnaire {
    }

    /**
     * 校验标识 用户语言默认表单
     */

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    @NotNull(groups = {VerifyUserQuestionnaire.class})
    private Long id;

    /**
     * 用户账号id
     */
    @ApiModelProperty(value = "用户账号id")
    private Long userAccountId;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;

    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    private Long exhibitionId;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    private String name;

    /**
     * 英文名
     */
    @ApiModelProperty(value = "英文名")
    private String enName;

    /**
     * 手机区号
     */
    @ApiModelProperty(value = "手机区号")
    private String mobileCountryCode;

    /**
     * 手机号
     */
    @ApiModelProperty(value = "手机号")
    private String mobile;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    private String email;

    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    private String gender;

    /**
     * 头像
     */
    @ApiModelProperty(value = "头像")
    private String headImageUrl;

    /**
     * 人脸
     */
    @ApiModelProperty(value = "人脸")
    private String faceImageUrl;

    /**
     * 国家
     */
    @ApiModelProperty(value = "国家")
    @NotNull(groups = {VerifyUserFormField.class})
    private Integer countryId;

    /**
     * 省份
     */
    @ApiModelProperty(value = "省份")
    private Integer provinceId;

    /**
     * 城市
     */
    @ApiModelProperty(value = "城市")
    private Integer cityId;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    private String address;

    /**
     * 英文地址
     */
    @ApiModelProperty(value = "英文地址")
    private String enAddress;

    /**
     * 证件类型
     */
    @ApiModelProperty(value = "证件类型")
    private String identificationType;

    /**
     * 证件号码
     */
    @ApiModelProperty(value = "证件号码")
    private String identificationNumber;

    /**
     * 证件照
     */
    @ApiModelProperty(value = "证件照")
    private String identificationImageUrl;

    /**
     * 电话
     */
    @ApiModelProperty(value = "电话")
    private String telephone;

    /**
     * 部门
     */
    @ApiModelProperty(value = "部门")
    private String department;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编")
    private String zipCode;

    /**
     * 传真
     */
    @ApiModelProperty(value = "传真")
    private String fax;

    /**
     * 社交媒体
     */
    @ApiModelProperty(value = "社交媒体")
    private String socialMedia;

    /**
     * 工作证
     */
    @ApiModelProperty(value = "工作证")
    private String workPassUrl;

    /**
     * 名片url
     */
    @ApiModelProperty(value = "名片url")
    private String businessCardUrl;

    /**
     * 职位
     */
    @ApiModelProperty(value = "职位")
    private String post;

    /**
     * 英文职位
     */
    @ApiModelProperty(value = "英文职位")
    private String enPost;

    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    private String companyName;

    /**
     * 公司英文名称
     */
    @ApiModelProperty(value = "公司英文名称")
    private String companyEnName;

    /**
     * 公司地址
     */
    @ApiModelProperty(value = "公司地址")
    private String companyAddress;

    /**
     * 公司英文地址
     */
    @ApiModelProperty(value = "公司英文地址")
    private String companyEnAddress;

    /**
     * 公司所在国
     */
    @ApiModelProperty(value = "公司所在国")
    private Integer companyCountryId;

    /**
     * 公司品牌
     */
    @ApiModelProperty(value = "公司品牌")
    private String companyBrand;

    /**
     * 公司英文品牌
     */
    @ApiModelProperty(value = "公司英文品牌")
    private String companyEnBrand;

    /**
     * 公司电话区号
     */
    @ApiModelProperty(value = "公司电话区号")
    private String companyTelCountryCode;

    /**
     * 公司电话
     */
    @ApiModelProperty(value = "公司电话")
    private String companyTelephone;

    /**
     * 公司邮箱
     */
    @ApiModelProperty(value = "公司邮箱")
    private String companyEmail;

    /**
     * 公司邮编
     */
    @ApiModelProperty(value = "公司邮编")
    private String companyZipCode;

    /**
     * 公司登记证
     */
    @ApiModelProperty(value = "公司登记证")
    private String companyRegistrationUrl;

    /**
     * 公司网站前缀
     */
    @ApiModelProperty(value = "公司网站前缀")
    private String companyWebsitePrefix;

    /**
     * 公司网站
     */
    @ApiModelProperty(value = "公司网站")
    private String companyWebsite;

    /**
     * 公司传真
     */
    @ApiModelProperty(value = "公司传真")
    private String companyFax;

    /**
     * 总部名称
     */
    @ApiModelProperty(value = "总部名称")
    private String headquartersName;

    /**
     * 总部英文名称
     */
    @ApiModelProperty(value = "总部英文名称")
    private String headquartersEnName;

    /**
     * 总部地址
     */
    @ApiModelProperty(value = "总部地址")
    private String headquartersAddress;

    /**
     * 总部英文地址
     */
    @ApiModelProperty(value = "总部英文地址")
    private String headquartersEnAddress;

    /**
     * 总部所在国
     */
    @ApiModelProperty(value = "总部所在国")
    private Integer headquartersCountryId;

    /**
     * 总部电话区号
     */
    @ApiModelProperty(value = "总部电话区号")
    private String headquartersTelCountryCode;

    /**
     * 总部电话
     */
    @ApiModelProperty(value = "总部电话")
    private String headquartersTelephone;

    /**
     * 总部邮箱
     */
    @ApiModelProperty(value = "总部邮箱")
    private String headquartersEmail;

    /**
     * 总部品牌
     */
    @ApiModelProperty(value = "总部品牌")
    private String headquartersBrand;

    /**
     * 总部英文品牌
     */
    @ApiModelProperty(value = "总部英文品牌")
    private String headquartersEnBrand;

    /**
     * 总部网站前缀
     */
    @ApiModelProperty(value = "总部网站前缀")
    private String headquartersWebsitePrefix;

    /**
     * 总部网站
     */
    @ApiModelProperty(value = "总部网站")
    private String headquartersWebsite;

    /**
     * 总部传真
     */
    @ApiModelProperty(value = "总部传真")
    private String headquartersFax;

    /**
     * 总部邮编
     */
    @ApiModelProperty(value = "总部邮编")
    private String headquartersZipCode;

    /**
     * 是否启用
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    private Boolean isDeleted;

    /**
     * 是否参加线下
     */
    @ApiModelProperty(value = "是否参加线下：1是；0否")
    private Integer isOffline;

    /**
     * 语言环境
     */
    @ApiModelProperty(value = "语言环境")
    @NotBlank(groups = {VerifyDefaultFormField.class})
    private String languageType;

}